import Vue from 'vue'

import axios from 'axios'

const instance = axios.create({
  baseURL: '/api/',
  timeout: 1000
})

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  config['headers'] = {
    'content-type': 'application/json; charset=utf-8',
    'x-access-token': localStorage.getItem('x-access-token')
  }

  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
})

const get = ({url, params={}}) => {
  return instance.get(url, {
    params,
  })
}

const post = ({url, data=''}) => {
  return instance.post(url, data)
}

const patch = ({url, data=''}) => {
  return instance.patch(url, data)
}

const removeItem = ({url, data=''}) => {
  return instance.delete(url, {
    data
  })
}

// axios, get请求的参数 params, delete, put, patch, post, 通过data 传数据，data格式取决于content-type

Vue.prototype.$http = {
  get,
  post,
  patch,
  removeItem
}

export {
  get,
  post,
  patch,
  removeItem
}